#ifndef GENOMEPROJECTUPLOADER_H
#define GENOMEPROJECTUPLOADER_H

#include <QObject>
#include <QString>
#include <QPointer>
#include <QList>

#include "../../sagevis.h";

#include "BaseDataManagement/genomedatabaseinterface.h"
#include "PubMedDataManagement/pubmedgenomelocaldatabaseinterface.h"
#include "ProprietaryDataManagement/proprietarygenomelocaldatabaseinterface.h"

#include "BaseDataManagement/gffreader.h"
#include "ProprietaryDataManagement/proprietarygffreader.h"
#include "PubMedDataManagement/pubmedgffreader.h"

#include "BaseDataManagement/genomeelementdatapacket.h"
#include "ProprietaryDataManagement/proprietarygenomeelementdatapacket.h"
#include "PubMedDataManagement/pubmedgenomeelementdatapacket.h"

#include "BaseDataManagement/contigdatapacket.h"


class GenomeProjectUploader : public QObject
{
    Q_OBJECT
public:
    explicit GenomeProjectUploader(QString projectFile, QObject *parent = 0);
    
    void readData();

signals:
    void dataUploadCompleteSignal( QList< QPointer < GenomeElementDataPacket> > genomeElementDataPackets, QList< QPointer < ContigDataPacket > > contigDataPackets , int contigCount);
    void finished();

public slots:

private:
    QString projectFile;
    //QPointer<GenomeDatabaseInterface> databaseInterface;/**Pointer to the database that will manage the data.*/
    QList< QPointer < GenomeElementDataPacket> > genomeElementDataPackets; /**Pointer to the list of data for genome elements to display.*/
    QList< QPointer < ContigDataPacket > > contigDataPackets;/**List of contig data packets*/

    
};

#endif // GENOMEPROJECTUPLOADER_H
